package com.lyj.ai.controller;


import org.springframework.ai.embedding.EmbeddingResponse;
import org.springframework.ai.openai.OpenAiEmbeddingModel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * 文档向量化/文本嵌入:
 *  由于需要将已拆分的知识片段文本存储向量库以便后续可以进行检索，而向量库存储的数据是向量不是文本，
 *  因此需要将文本进行向量化，即将一个字符串转换为一个N维数组，这个过程在自然语言处理（NLP）领域称为文本嵌入（Words Embedding）。
 */
@RestController

public class EmbeddingController {

    @Autowired
    OpenAiEmbeddingModel embeddingModel;




    /**
     * 将文本嵌入到向量数据库中
     * @return
     */
    @RequestMapping("/ai/embedding")
    public String embeding(@RequestParam(value = "msg") String msg) {
        EmbeddingResponse embeddingResponse = this.embeddingModel.embedForResponse(List.of(msg));
        return embeddingResponse.getResult().getOutput().toString();
    }






}
